package oop.controller.action.question;

import java.sql.SQLException;

import oop.controller.action.DefaultAction;
import oop.data.BaseQuestion;
import oop.db.dao.QuestionDAO;

import com.oreilly.servlet.ParameterNotFoundException;

public class CreateAction extends DefaultAction {

	@Override
	public void performImpl() throws Exception {
		title("Tạo câu hỏi mới");
		
		String submit = request.getParameter("qc_submit");
		if ("create".equals(submit)) {
			doCreate();
		}
	}
	private void doCreate() throws SQLException {
		boolean error = false;

		String content = request.getParameter("qc_content");

		long topicId = 0;
		try {
			topicId = getParams().getLong("qc_topic");
		} catch (ParameterNotFoundException ex) {
			request.setAttribute("topicErr", "Bạn cần chọn chủ đề.");
			error = true;
		} catch (NumberFormatException ex) {
			request.setAttribute("topicErr", "ID không hợp lệ: " + request.getParameter("qc_topic"));
			error = true;
		}

		int level = 3;
		try {
			level = getParams().getInt("qc_level");
			if (level < 1 || level > 5) {
				levelError = "Độ khó không hợp lệ.";
				error = true;
			}
		} catch (NumberFormatException ex) {
			levelError = "Độ khó không hợp lệ.";
			error = true;
		} catch (ParameterNotFoundException e) {
			levelError = "Bạn cần chọn độ khó.";
			error = true;
		}
		
		if (!error) {
			BaseQuestion question = QuestionDAO.create(content, level,
					topicId, getUser().getId(), 1);
			setNextAction("answer.create&question=" + question.getId());
		}
	}
	
	private String levelError;
	private String markError;
	private String topicError;
	
	public String getLevelError() {
		return levelError;
	}
	public String getMarkError() {
		return markError;
	}
	public String getTopicError() {
		return topicError;
	}
	
}
